// apodidae/src/utils/CreateJson.js
/**
 * 说明：
 * 1. 使用这个命令需要将所有需要国际化的文案写在对应目录下的messages文件或者utils下的公共messages中；
 * 2. 请勿直接操作 例如 zh.json 文件， 因为使用命令时是全量覆盖。会导致丢失；
 */

 const fs = require('fs');
 const path = require('path');
 const glob = require('glob');
 
 const args = process.argv.slice(2);
 
 const targetDir = 'src/translations';
 const fileName = args[0] || 'zhByToolCreate.json';
 // const isReplace = args[1] || false;
 const JsonRes = {};
 
 function writeCallBack() {
     console.log(JSON.stringify(JsonRes, null, '\t'))
   fs.writeFile(path.join(process.cwd(), targetDir, `${fileName}.json`), JSON.stringify(JsonRes, null, '\t'), (err) => {
     if (err) throw err;
     console.log(` success  ${targetDir}/${fileName}.json   已生成, 请在对应目录下查看`);
   });
 }
 
 // create all messages
 glob(`${process.cwd()}/**/*.{tsx,js,jsx,ts}`, { ignore: `${process.cwd()}/node_modules/*/**` }, (err, files) => {
   console.log(files.length);
   files.forEach((fileDir) => {
     const res = fs.readFileSync(fileDir, { encoding: 'UTF-8' });
     const isReplace = true;
     // const keys = res.match(/(?<=id: ').*?(?=',)/g);
     // const containers = `${process.cwd()}/src/containers/`;
     let NameSpace = '';
     // if (isReplace && fileDir.includes(containers)) {
     //   NameSpace = fileDir.match(/(?<=containers\/).*?(?=\/messages)/g);
     // }
 
     if (isReplace) {
       NameSpace = fileDir.match(/(?<=containers\/).*?(?=\/messages)/g);
     }
     let keys = res.match(/(?<=id: ').*?(?=',)|(?<=id: `).*?(?=`,)/g);
     if (!keys || keys.length <= 0) {
    //    console.log(fileDir, '没有查找到Keys');
       return;
     }
     if (isReplace && NameSpace) {
       // console.log(keys, 'keys');
       keys = keys.map((key) => {
         return key.replace(/\${NAMESPACE}/, NameSpace);
       });
       // console.log(keys, 'keys');
     }
 
 
     const texts = res.match(/(?<=defaultMessage: ').*?(?=')/g) || [];
     // console.log(keys, texts);
     if (texts.length === 0) {
       // eslint-disable-next-line no-console
       console.log('没有查找到texts');
     }
     keys.forEach((key, index) => {
       JsonRes[key] = texts[index];
     });
   });
   // writeCallBack();
   handleMenuFile();
 });
 const handleMenuFile = () => {
   // 特殊处理  main.menu.tsx 文件
   glob(`${process.cwd()}/config/menu.conf.tsx`, { ignore: `${process.cwd()}/node_modules/*/**` }, (err, files) => {
     files.forEach((fileDir) => {
       const res = fs.readFileSync(fileDir, { encoding: 'UTF-8' });
       const keys = res.match(/(?<=id: ').*?(?=',)|(?<=id: `).*?(?=`,)/g);
       if (!keys || keys.length <= 0) {
         console.log('没有查找到Keys');
         return;
       }
       const texts = res.match(/(?<=defaultMessage: ').*?(?=')/g) || [];
       // console.log(keys, texts);
       if (texts.length === 0) {
         console.log('没有查找到texts');
       }
       keys.forEach((key, index) => {
         JsonRes[key] = texts[index];
       });
     });
     writeCallBack();
   });
 };
 
 